Understanding Rust futures by going way too deep